home *** CD-ROM | disk | FTP | other *** search
/ CD/PC Actual 1 / PC Actual CD 01.iso / f1 / keylock.arj / SKL.ASM < prev    next >
Encoding:
Assembly Source File  |  1992-05-11  |  3.7 KB  |  246 lines

  1.     name    SKL
  2.     
  3. CSEG    SEGMENT    
  4.  
  5. ASSUME CS:CSEG,DS:CSEG,ES:CSEG
  6.  
  7.     ORG    100H
  8.  
  9. ENTRADA:
  10.     JMP    INSTALAR
  11.  
  12. MANEJADOR    PROC    FAR
  13.  
  14. JMP    INICIO
  15. INT9VEC    LABEL    DWORD                ;variables
  16. INT9DES    DW     0
  17. INT9SEG DW    0
  18. SW    DB     0
  19. SWON    DB    40,40,41,41,10,10,30,8
  20.  
  21. INICIO:
  22. VECTOR    EQU    CS
  23. PUSHF
  24. PUSH    AX                 
  25. PUSH    DS
  26. XOR    AX,AX
  27. MOV    DS,AX
  28. MOV    AL,DS:[0417h]    ;leer estado de teclas  APTDO 1
  29. AND    AL,5        ;aqui se coloca el valor de las teclas a pulsar
  30. CMP    AL,5        ;podemos variarlas segun necesitemos
  31. JNE    ETI1        ;si no son continuar int 9
  32. PUSH    DX        ;ver tipo de tarjeta
  33. PUSH    SI
  34. MOV    DX,03C0H
  35. IN    AL,DX
  36. CMP    AL,0FFH
  37. JNE    EGA        ;si no es cga ir a ega,vga
  38. CGA:
  39. MOV    DX,DS:[0463H]
  40. MOV    AL,VECTOR:SW
  41. CMP    AL,0
  42. JE    APAGA        ;si esta activada la pantalla, apagarla
  43. XOR    AX,AX
  44. MOV    AL,DS:[0449H]
  45. MOV    SI,AX
  46. CMP    AL,07
  47. JNE    SIGUE
  48. MOV    AL,DS:[0460H]
  49. CMP    AL,03
  50. JA    SIGUE
  51. ADD    SI,+4
  52. SIGUE:
  53. ADD    DX,+04            ;encender la pantalla
  54. MOV    AL,VECTOR:SWON + [SI]
  55. OUT    DX,AL
  56. MOV    AL,0
  57. MOV    VECTOR:SW,AL
  58. JMP    ETI3
  59. APAGA:
  60. ADD    DX,4
  61. MOV    AL,0
  62. OUT    DX,AL
  63. MOV    AL,0FFH
  64. MOV    VECTOR:SW,AL
  65. JMP    ETI3
  66. EGA:
  67. MOV    DX,DS:[0463h]
  68. ADD    DX,+06
  69. IN    AL,DX
  70. MOV    AL,VECTOR:SW
  71. MOV    DX,03C0H
  72. OUT    DX,AL
  73. XOR    AL,0FFh        ;cambiar pantalla de on a off y viceversa
  74. MOV    VECTOR:SW,AL
  75. JMP    ETI3
  76. ETI1:
  77. MOV    AL,VECTOR:SW    ;si pantalla esta apagada desactivar teclado
  78. CMP    AL,0
  79. JE    ETI4
  80. IN    AL,60H
  81. MOV    AH,AL
  82. PUSH    AX
  83. IN    AL,61H
  84. OR    AL,80H
  85. OUT    61H,AL
  86. AND    AL,7FH
  87. OUT    61H,AL
  88. POP    AX        ;APTDO 2 aqui hemos de colocar los codigos
  89. MOV    AL,255        ;de rastreo de las teclas en AH y el valor 
  90. CMP    AH,29        ;a mover al BIOS segun la tecla, en AL
  91. JE    SIGUE1        ;
  92. SUB    AL,4        ;
  93. CMP    AH,54        ;
  94. JE    SIGUE2        ;
  95. SUB    AL,1        ;
  96. AND    DS:[0417h],AL    ;
  97. JMP    ETI2        ;
  98. SIGUE1:            ;
  99. MOV    AL,4        ;
  100. OR    DS:[0417h],AL    ;
  101. JMP    ETI2        ;
  102. SIGUE2:            ;
  103. MOV    AL,1        ;
  104. OR    DS:[0417h],AL    ;
  105. ETI2:
  106. MOV    AL,20H
  107. OUT    20H,AL
  108. POP    DS
  109. POP    AX
  110. POPF
  111. IRET
  112.  
  113.  
  114. ETI3:
  115. POP    SI
  116. POP    DX
  117. ETI4:
  118. POP    DS
  119. POP    AX
  120. POPF
  121. JMP    VECTOR:INT9VEC
  122.  
  123. MANEJADOR     ENDP
  124.  
  125. INSTALAR PROC 
  126.  
  127. LONG    EQU    $-ENTRADA
  128. PUSHF
  129. PUSH    AX
  130. PUSH    BX
  131. PUSH    CX
  132. PUSH    ES
  133. PUSH    SI
  134. PUSH    DI
  135. MOV    AX,3509H    ;salvar segmento y offset de int 9
  136. INT    21H
  137. MOV    INT9SEG,ES
  138. MOV    INT9DES,BX
  139. MOV    SI,OFFSET INICIO ;comprobar si el programa ya esta en 
  140. MOV    DI,SI         ;memoria
  141. CLD
  142. MOV    CX,100
  143. REPZ    CMPSB
  144. JZ    SALIR        ;si lo esta acabar
  145. MOV    AX,2509H
  146. MOV    DX,OFFSET MANEJADOR    ;direccionar nueva int 9 y preparar
  147. XOR    BX,BX            ;mensaje en pantalla
  148. MOV    SI,075H
  149. MOV    CX,07
  150. CSN:
  151. MOV    BL,TABLA[SI]
  152. ADD    DX,BX    
  153. INC    SI
  154. LOOP    CSN
  155. SUB    DX,02BDH
  156. INT    21H
  157. MOV    AX,0600H
  158. XOR    CX,CX
  159. MOV    BH,7
  160. MOV    DX,2479H
  161. INT    10H
  162. XOR    BX,BX
  163. MOV    AH,2
  164. MOV    DH,2
  165. MOV    DL,2
  166. INT    10H
  167. XOR    SI,SI
  168. CALL    WRITE
  169. CALL    WRITE
  170. CALL    WRITE
  171. ADD    SI,96
  172. CALL    WRITE
  173. SUB    SI,128
  174. CALL    WRITE
  175. ADD    SI,64
  176. CALL    WRITE
  177. SUB    SI,96
  178. CALL    WRITE
  179. CALL    WRITE
  180. MOV    AH,2        ;posicionar cursor despues del mensaje
  181. MOV    DH,20        ;y calcular memoria a reservar
  182. MOV    DL,0
  183. INT    10H
  184. MOV    DX,((OFFSET LONG + 15)/16)+10H
  185. MOV    AX,3100H
  186. INT    21H        ;acabar y dejar residente
  187. SALIR:
  188. MOV    AH,09
  189. MOV    DX,OFFSET RESIDE
  190. INT    21h
  191. POP    DI
  192. POP    SI
  193. POP    ES
  194. POP    CX
  195. POP    BX
  196. POP    AX
  197. POPF    
  198. INT    20H        ;acabar si ya estaba residente
  199.  
  200. INSTALAR    ENDP
  201.  
  202. WRITE    PROC
  203.  
  204. PUSH    AX    ;se usa para escribir en pantalla el mensaje
  205. PUSH    BX
  206. PUSH    CX
  207.  
  208. MOV    CX,32
  209. LIN:
  210. MOV    BX,001Fh
  211. MOV    AH,9
  212. MOV    AL,DS:TABLA[SI]
  213. INT    10H
  214. INC    SI
  215. INC    DL
  216. MOV    AH,2
  217. INT    10H
  218. LOOP    LIN
  219.  
  220. MOV    DL,2
  221. INC    DH
  222. MOV    AH,2
  223. INT    10H
  224.  
  225. POP    CX
  226. POP    BX
  227. POP    AX
  228.  
  229. RET
  230.  
  231. WRITE    ENDP    ; mensajes de pantalla a continuacion
  232.  
  233. TABLA    DB    213, 30 DUP (205),184
  234.     DB    179,'  Screen-Key-Lock   Ver 1.50  ',179
  235.     DB     179,'         IBM-PC/XT/AT         ',179
  236.     DB    179,'   Copyright  Fernando PayĆ”   ',179
  237.     DB    179,' (C) 1991,92 PC-Systems ALCOY ',179
  238.     DB    212, 30 DUP (205),190
  239.     DB    179, 30 DUP (0),179
  240. RESIDE    DB    'Screen-Key-Lock  ya  Residente',24h
  241.  
  242. CSEG    ENDS
  243.  
  244.     END    ENTRADA
  245.  
  246.